# -*- coding: utf-8 -*-
"""
Created on Tue Jul 16 23:36:09 2024

@author: LoongFly
"""
import cv2
import numpy as np
img_input = cv2.imread("H:\\PycharmProjects\\OpenCV\\A3_Morphology\\photo\\lena.png", cv2.IMREAD_UNCHANGED)

# 使用sobel算子计算图像梯度
sobelx = cv2.Sobel(img_input, cv2.CV_64F, 1, 0)     #计算x方向上的梯度
sobelx = cv2.convertScaleAbs(sobelx)                #将梯度转换为无符号8位整数 处理绝对值，两个边界都取出来
sobely = cv2.Sobel(img_input, cv2.CV_64F, 0, 1)     #计算y方向上的梯度
sobely = cv2.convertScaleAbs(sobely)                #将梯度转换为无符号8位整数
sobelxy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)   #将x方向和y方向上的梯度叠加

#使用 scharr算子计算图像梯度
scharrx = cv2.Scharr(img_input, cv2.CV_64F, 1, 0)
scharrx = cv2.convertScaleAbs(scharrx)
scharry = cv2.Scharr(img_input, cv2.CV_64F, 0, 1)
scharry = cv2.convertScaleAbs(scharry)
scharr_result = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0)

cv2.imshow("Original", img_input)       #显示原始图像
cv2.imshow("sobel", sobelxy)            #显示整体边界图像，xy求和
cv2.imshow("scharr", scharr_result)     #显示整体边界图像，xy求和

cv2.waitKey()
cv2.destroyAllWindows()
